This page last changed on Jan 23, 2008 by carlos.gonzalez.
Useful Information
El Alcance del Proyecto fue reducido para poder ser cubierto en lo que queda de semestre. La cantidad de métricas a implementar disminuyó. Es importante que impriman esta nueva versión.
Cualquier duda debe ser aclarada en horas de clases, o a través del correo electrónico.

Generador de Métricas para programas en el lenguaje SOberon

En la actualidad el desarrollo de grandes proyectos de software se ha convertido en una tarea común y de extrema importancia. Existen muchas herramientas de desarrollo y sistemas comerciales que ofrecen facilidades para que los líderes de proyecto y los desarrolladores consulten una serie de medidas cuantitativas sobre el sistema de software en desarrollo y el proceso utilizado para producirlo. Este tipo de herramientas son denominadas Generadores de Métricas (" Metric Tools" en inglés).

Existen diversos tipos de métricas que se pueden calcular para un proyecto de software. Entre los tipos de métricas disponibles son de especial importancia las métricas a nivel de código fuente, las cuales son valores que se determinan examinando las líneas de código de los módulos/programas que conforman un software.
En este proyecto se implementará un Generador de Métricas para un subconjunto del lenguaje de programación Oberon que llamaremos SOberon (por Sub-Oberon). Esto lo harán utilizando el generador de compiladores Antlr y el lenguaje de programación Java. La gramática de SOberon a utilizar se encuentra Gramática SOberon

El generador de métricas de programas SOberon se llamará SOberonCME (por Calculador de Métricas para SOberon), y debe funcionar como un comando de consola que reciba como parámetro el nombre del directorio donde se encuentran los programas fuentes a analizar (archivos con extensión ".sob") y produzca como resultado un conjunto de reportes sobre las métricas calculadas.

Métricas a calcular

Métricas por Operación Líneas Totales  (LT)
Líneas de Código (LDC)
Líneas de Comentarios (LC)
Métricas por Archivo Líneas Totales  (aLT)
Líneas de Código (aLDC)
Líneas de Comentarios (aLC)
Total de Operaciones (aOP)
Métricas por Proyecto Número de Archivos (NM)
Líneas Totales  en el Proyecto (tLT)
Total de Operaciones (tOP)
Total de Líneas de Código (tLDC)
Total de Líneas de Comentarios (tLC)

Descripción de las métricas

A continuación se presenta una breve descripción de las métricas a calcular por SOberonCME.

  • LDC (Líneas de Código): Toda línea del programa fuente que no está en blanco o contenga sólo comentarios, es contabilizada como una línea de código.
  • LC (Líneas de Comentarios): Una línea del programa fuente es contabilizada como línea de comentario si posee cualquiera de los delimitadores de comentarios ("(" ? ")") o posee parte de un comentario que ocupa varias Líneas.

La siguiente tabla presenta un ejemplo de una porción de un programa SOberon y la manera en que se deben contabilizar las Líneas:

Líneas del Programa Fuente LDC LC LB
IF (A>=B) THEN (* - comentario sobre la condición *)
X X
(*   X  
- Comentario Multi-Línea -   X  
*)   X  
A := A - B; X    

    X
(* - Comentario de una línea - *)   X  
END X    

     

Entre las métricas por Operación se destacan:

  • Número de Operaciones Locales (NOL): Debido a que SOberon permite la definición de operaciones anidadas, además de reportar la cantidad de declaraciones locales por operación, es necesario también reportar/calcular la cantidad de operaciones locales a cada operación.
  • Nivel de Profundidad (NDP): El nivel de profundidad es un valor entero asociado a una Operación y posee las siguientes propiedades:
    • NDP(Op) = 1, si Op es local al módulo de programa
    • NDP(Op) = 1 + NDP(padre(Op)), si Op no es local al módulo de programa y padre(Op) es la Operación donde Op es local.
    • Número de Puntos de Retorno (NPR): esta métrica sirve como medida para estimar los costos de mantenimiento del código, debido a que una Operación con múltiples puntos de salida puede ser difícil de entender y en consecuencia de modificar/mantener. En SOberon, los puntos de retorno están denotados por las instrucciones EXIT y RETURN.
Document generated by Confluence on Oct 04, 2010 11:25